/*************************************************************************
    > File Name: code.c
    > Author: ma6174
    > Mail: ma6174@163.com 
    > Created Time: Sat 01 Mar 2025 12:04:23 PM CST
 ************************************************************************/

#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/wait.h>

void ChildRun()            //调用子进程
{
	int cnt = 5;
	while(cnt)
	{
		printf("I am child process, pid: %d, ppid: %d,cnt: %d\n",getpid(),getppid(),cnt);
		sleep(1);
		cnt--;
	}
}

int main()
{
	printf("I am father process, pid: %d, ppid: %d\n",getpid(),getppid());

	pid_t id = fork();     //创建子进程
	if(id ==0)
	{
		//运行子进程
		ChildRun();
		printf("child quit...\n");     //调用完子进程，显示一下子进程退出信息
		exit(0);                       //程序直接在这里退出
	}
	sleep(10);                         //休眠10s

	//这里就是父进程的等待信息
	pid_t rid = wait(NULL);            //父进程进行等待，这里不关心子进程的pid，直接设置为NULL
	if(rid>0)
	{
		printf("wait success, rid: %d\n",rid);   //d等待成功，则输出这行信息
	}
	sleep(3);
	printf("fatherd quit...\n");     //显示一下父进程退出信息
}
